package com.ctshk.rpc.order.tour.service;

import com.ctshk.common.dto.Result;
import com.ctshk.common.model.PageResponse;
import com.ctshk.common.model.TokenUser;
import com.ctshk.common.vo.OrderRefundDTO;
import com.ctshk.rpc.order.tour.dto.ApprovalRefundListDTO;
import com.ctshk.rpc.order.tour.dto.SeriesOrderTouristRefundListDTO;
import com.ctshk.rpc.order.tour.req.*;

import java.util.List;

/**
 * <p>
 * 系列团游客退款记录 服务类
 * </p>
 *
 * @author 谭响
 * @since 2021-01-28
 */
public interface ISeriesOrderTouristRefundService {

    /**
     * 列表
     */
    PageResponse<SeriesOrderTouristRefundListDTO> list(SeriesOrderTouristRefundListReq req);

    /**
     * 添加
     */
    Result<Object> add(SeriesOrderTouristRefundAddReq req);

    /**
     * 添加计算
     */
    Result addCalculation(SeriesOrderTouristRefundAddCalculationReq req);

    /**
     * 确认
     */
    Result confirm(SeriesOrderTouristRefundConfirmReq req, TokenUser currentUser);

    /**
     * 审核
     */
    Result approval(SeriesOrderTouristRefundApprovalReq req);
    
    /**
     * 退款(内部接口)
     * @param refundNumber
     * @param tokenUser
     * @return
     */
    Result<Long> confirmRefund(String refundNumber, TokenUser tokenUser);

    /**
     * 财务中心-销售订单退款-退款详情-退款明细列表（内部接口）
     * @param refundNumber 退款单号
     * @return
     */
    Result<List<OrderRefundDTO>> refundDetailList(String refundNumber);

    /**
     * 审批中心-退款信息列表
     * @param req
     * @return
     */
    Result<List<ApprovalRefundListDTO>> approvalRefundList(ApprovalIdReq req);
}
